package sisbici.dao;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.persistence.Query;

import sisbici.entidades.Bicicleta;


public class BicicletaDao extends SoporteDao {
	@SuppressWarnings("unchecked")
	public List<Bicicleta> buscarBicicletasIdUsuario(String idusuario) {
	    
		List<Bicicleta> bici=null;
		Map<String, Object> parametros = new HashMap<String, Object>();
		
		parametros.put("idUsu", idusuario);
		
		bici= (List<Bicicleta>) findByNamedQueryAndNamedParams("Bicicleta.idUsuario", parametros);
		
		if (bici.size() > 0) {
			System.out.print("esta entrando");
			return bici;
		}
		return null;
	}
	public Bicicleta buscarBiciPorSerie(String serie) {
	    
		Map<String, Object> parametros = new HashMap<String, Object>();
		
		parametros.put("serial", serie);
		
		@SuppressWarnings("unchecked")
		List <Bicicleta> bici = findByNamedQueryAndNamedParams("Bicicleta.serie", parametros);
		
		if (bici.size() > 0) {
			return bici.get(0);
		}
		
		return null;
	}
	
	
/**
 * Permite insertar una bicicleta.
 * @param bici la bicicleta a insertar.
 * @return la bicicleta insertada.
 */
public Bicicleta insertarBicicleta(Bicicleta bici){
		
	    Bicicleta entidadResultado = null;
		boolean resultado = insertarEntidad(bici);
		
		if (resultado) {
			entidadResultado = bici;
		}
		
		return entidadResultado;
	}

public Bicicleta eliminarBicicleta(Bicicleta bici) {
	Bicicleta entidadAux = null; 
	try {
		getEntityManager().getTransaction().begin();
		entidadAux = getEntityManager().find(Bicicleta.class, bici.getCodBarras());
		System.out.println("\n entidad aux "+entidadAux);
		getEntityManager().remove(entidadAux);
		getEntityManager().getTransaction().commit();
	} catch (Throwable t) {
	
	}
	return entidadAux;
}

public int eliminarBiciPorDniUsu(String idusuario) {
	
	Query q = getEntityManager().createNamedQuery("Bicicleta.borrarporidusuario");
	//int delete=q.setParameter("idUsuBorrar", idusuario).executeUpdate();
    System.out.println("esto el lo que devuelve"+q.setParameter("idUsuBorrar", idusuario).executeUpdate());
    return 0;
}

public Bicicleta buscarBiciPorCodBarras(String codBarras) {
	
		Bicicleta respuesta = (Bicicleta) encontrarEntidadPorId(Bicicleta.class, codBarras);
		
		if (respuesta != null) {
			return respuesta;
		}
		return null;
	}
public void actualizar(Bicicleta bici) {
	try {
		getEntityManager().getTransaction().begin();
		getEntityManager().merge(bici);
		getEntityManager().getTransaction().commit();
	} catch (Throwable t){
		System.out.print(""+t);
	}
	
}
}
